var letterCombinations = function(digits) {
  // 如果是空字符串直接返回空数组
    if(!digits.length) return []
    const map = new Map()
    map.set('2','abc')
    map.set('3','def')
    map.set('4','ghi')
    map.set('5','jkl')
    map.set('6','mno')
    map.set('7','pqrs')
    map.set('8','tuv')
    map.set('9','wxyz')
    // 用来存储结果
    let ans = []
    let arr = new Array(digits.length).fill('')
    for(var i=0;i<digits.length;i++) {
      arr[i] = map.get(digits[i])
    }
    // 利用回溯算法，id为下标 str存储字符串
    const ds = (id,str) => {
      if(id==arr.length) {
        ans.push(str)
        return 
      }
      // 利用深度算法
      for(var i=0;i<arr[id].length;i++) {
        ds(id+1,str+arr[id][i])
      }
    }
    ds(0,'')
    return ans
};
console.log(letterCombinations('2'))